package javagame;

import gameobjects.*;
import gameobjects.Objekat.oblik;
import gameobjects.PowerUp.tip_powerup;
import gameobjects.Protivnik.tip_protivnika;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

import javagame.Play.game_mode;

import org.newdawn.slick.*;
import org.newdawn.slick.state.*;

import gamesound.*;
import gamethreads.*;

public class Level7Bonus extends Level {
	
	private static int brProtivnika = 8;
	private static int brPowerUp = 4; 
	private static int brNagrada = 2; 
	
	private Image world;
	private PowerUp [] nagrada;
	private int[] duration;
	private int[] duration2;
	private int[] duration3;
	private int poslednjiTaster;
	private int vremeKlizanja;
	private int poslednjiTaster2;
	private int vremeKlizanja2;
	
	public Level7Bonus (int state) {}

	public int getID() {
		return 13;
	}

	public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
		Nivo.addLevel(this);
		tenkIgrac = Igrac.dohvIgraca();
		tenkIgrac2 = Igrac2.dohvIgraca();
		protivnik = new Protivnik[brProtivnika];
		protivnikT = new ProtivnikT[brProtivnika];
		budzenje = new PowerUp[brPowerUp];
		nagrada = new PowerUp[brNagrada];
		kolizija = new Kolizija();
		zvuk = Zvuk.dohvZvuk();
		quit = false;
		shot = false;
		shot2 = false;
		otvoriProlaz = false;
		duration = new int[2];
		duration2 = new int[2];
		duration3 = new int[2];
		duration[0] = duration[1] = 200;
		duration2[0] = duration2[1] = 2000;
		duration3[0]= duration3[1] = 500;
		world = new Image("res/level2_bonus.png");
		poslednjiTaster = 0;
		vremeKlizanja = 0;
		poslednjiTaster2 = 0;
		vremeKlizanja2 = 0;
		dodajObjekte();	
		initProtivnika();
		initPowerUp();
		kreiraniProtivnici = false;
	}
	
	public void initProtivnika () throws SlickException {
		Image [] eksp = {new Image("res/bum.png"), new Image("res/bum2.png")};
		protivnik[0] = new Top(tenkIgrac, tenkIgrac2, this);
		protivnik[1] = new Top(tenkIgrac, tenkIgrac2, this);
		protivnik[2] = new Top(tenkIgrac, tenkIgrac2, this);
		protivnik[3] = new Top(tenkIgrac, tenkIgrac2, this);
		protivnik[4] = new Helikopter(tenkIgrac, tenkIgrac2, this);
		protivnik[5] = new Helikopter(tenkIgrac, tenkIgrac2, this);
		protivnik[6] = new Helikopter(tenkIgrac, tenkIgrac2, this);
		protivnik[7] = new Helikopter(tenkIgrac, tenkIgrac2, this);
		for (int i=0; i<protivnik.length; i++) {
			protivnik[i].setAnimation();
			protivnik[i].setEksplozija(new Animation(eksp, duration2, true));
			protivnik[i].setMeci(new ArrayList<Metak>());
		}
		kreiraniProtivnici = true;
	}
	
	public void postaviProtivnike () {
		if(mod == game_mode.MOD1) {
			protivnik[0].setProtivnikX(360);
			protivnik[0].setProtivnikY(230);
			protivnik[1].setProtivnikX(610);
			protivnik[1].setProtivnikY(230);
			protivnik[2].setProtivnikX(360);
			protivnik[2].setProtivnikY(480);
			protivnik[3].setProtivnikX(610);
			protivnik[3].setProtivnikY(480);
			protivnik[4].setProtivnikX(50);
			protivnik[4].setProtivnikY(50);
			protivnik[5].setProtivnikX(250);
			protivnik[5].setProtivnikY(50);
			protivnik[6].setProtivnikX(50);
			protivnik[6].setProtivnikY(650);
			protivnik[7].setProtivnikX(250);
			protivnik[7].setProtivnikY(650);
			for (int i=0; i<protivnik.length; i++) {
				protivnik[i].setImaDvaIgraca(dvaIgraca);
				protivnik[i].postaviTezinu();
				protivnik[i].setZid(0);
			}
		}
	}
	
	public void initPowerUp () throws SlickException {
		Image stit = new Image("res/stit.png");
		Image dolar = new Image("res/bod.png");
		Image raketa = new Image("res/raketa_pu.png");
		Image zvezda = new Image("res/zvezda.png");
		for (int i=0; i<budzenje.length; i++)
			budzenje[i] = new PowerUp(stit, dolar, tip_powerup.SHIELD);
		nagrada[0] = new PowerUp(raketa, dolar, tip_powerup.SHOT);
		nagrada[0].setxKoord(488);
		nagrada[0].setyKoord(295);
		nagrada[1] = new PowerUp(zvezda, dolar, tip_powerup.STAR);
		nagrada[1].setxKoord(488);
		nagrada[1].setyKoord(395);
	}
	
	public void oziviSve () {
		super.oziviSve();
		nagrada[0].setPokupljen(false);
		nagrada[1].setPokupljen(false);
	}
	
	public void resetProlaz () {}
	
	public void dodajObjekte() {
		//kamenje
		kolizija.dodajKvadrat(100, 115);
		kolizija.dodajKvadrat(435, 90);
		kolizija.dodajKvadrat(775, 90);
		kolizija.dodajKvadrat(190, 350);
		kolizija.dodajKvadrat(110, 610);
		kolizija.dodajKvadrat(780, 625);
		
		//zid
		kolizija.dodajPravougaonik(974, 0, 50, 331);
		kolizija.dodajPravougaonik(974, 436, 50, 332);
		
		//jezero
		kolizija.dodajPravougaonikVoda(410, 230, 200, 50);
		kolizija.dodajPravougaonikVoda(360, 280, 300, 200);
		kolizija.dodajPravougaonikVoda(410, 480, 200, 50);
	}

	public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
		g.drawImage(world, 0, 0);
		if(mod == game_mode.MOD1) {
			for (int i=0; i<protivnik.length; i++) {
				if (protivnik[i].isUbiven() == true) {
					if(protivnik[i].getVrsta() == tip_protivnika.CRNI) {
						if (budzenje[i].isPokupljen() == false) {
							budzenje[i].setxKoord(protivnik[i].getProtivnikX());
							budzenje[i].setyKoord(protivnik[i].getProtivnikY());
							budzenje[i].crtaj();
						}
					}
					if(protivnik[i].getVrsta() == tip_protivnika.TOP) {
						if (budzenje[i].isPokupljen() == false) {
							budzenje[i].setxKoord(protivnik[i].getProtivnikX());
							budzenje[i].setyKoord(protivnik[i].getProtivnikY());
							budzenje[i].crtaj();
						}
					}
					protivnik[i].eksplodiraj();
				}
			}
		}
		/*if(mod == game_mode.MOD2) {
			for (int i=0; i<protivnikT.length; i++) {
				if (protivnikT[i].isUbiven() == true) {
					if(protivnikT[i].getVrsta() == tip_protivnika.CRNI) {
						if (budzenje[i].isPokupljen() == false) {
							budzenje[i].setxKoord(protivnikT[i].getProtivnikX());
							budzenje[i].setyKoord(protivnikT[i].getProtivnikY());
							budzenje[i].crtaj();
						}
					}
					if(protivnikT[i].getVrsta() == tip_protivnika.TOP) {
						if (budzenje[i].isPokupljen() == false) {
							budzenje[i].setxKoord(protivnikT[i].getProtivnikX());
							budzenje[i].setyKoord(protivnikT[i].getProtivnikY());
							budzenje[i].crtaj();
						}
					}
					protivnikT[i].eksplodiraj();
				}
			}
		}*/
		if (krajNivoa()) {
			if (nagrada[0].isPokupljen() == false)
				nagrada[0].crtaj();
			if (nagrada[1].isPokupljen() == false)
				nagrada[1].crtaj();
		}
		if (tenkIgrac.isZiv()) {
			tenkIgrac.crtaj(g);
		}
		else
			tenkIgrac.eksplodiraj();
		if (dvaIgraca) {
			if (tenkIgrac2.isZiv()) {
				tenkIgrac2.crtaj(g);
			}
			else
				tenkIgrac2.eksplodiraj();
		}
		
		if (shot) {
			for (Iterator<Metak> i = tenkIgrac.getMetak().iterator(); i.hasNext();) {
				Metak m = i.next();
				m.crtaj(g);
			}
			for (Iterator<Metak> i = tenkIgrac.getRakete().iterator(); i.hasNext();) { //crtanje raketa(sekundarnog oruzja)
				Metak r = i.next();
				r.crtaj(g);
			}
		}
		if (shot2) {
			for (Iterator<Metak> i = tenkIgrac2.getMetak().iterator(); i.hasNext();) { //crtanje metkova
				Metak m = i.next();
				m.crtaj(g);
			}
			for (Iterator<Metak> i = tenkIgrac2.getRakete().iterator(); i.hasNext();) { //crtanje raketa(sekundarnog oruzja)
				Metak r = i.next();
				r.crtaj(g);
			}
		}
		if(mod == game_mode.MOD1) {
			for (int i=0; i<protivnik.length; i++) {
				if (protivnik[i].isUbiven() == false) protivnik[i].crtaj(g);
				for (Iterator<Metak> j = protivnik[i].getMeci().iterator(); j.hasNext();) {
					Metak m = j.next();
					m.crtaj(g);
				}
			}
		}
		/*if(mod == game_mode.MOD2) {
			for (int i=0; i<protivnikT.length; i++) {
				if (protivnikT[i].isUbiven() == false) protivnikT[i].crtaj();
				for (Iterator<Metak> j = protivnikT[i].getMeci().iterator(); j.hasNext();) {
					Metak m = j.next();
					m.crtaj(g);
				}
			}
		}*/
		if (quit == true) {
			crtajPauzu(g);
		}
	}
	
	
	
	public void kretanje (int delta) throws SlickException {
		if (mod == game_mode.MOD1)
		for (int i=0; i<protivnik.length; i++) {
			if (protivnik[i].isUbiven() == false && (tenkIgrac.isZiv() || tenkIgrac2.isZiv()))
					protivnik[i].protivnikAI(delta, kolizija, false);
			for (Iterator<Metak> j = protivnik[i].getMeci().iterator(); j.hasNext();) { // kretanje metka protivnika
				Metak m = j.next();
				m.pomerajMetka(delta);
				if (m.getMetakX()>tenkIgrac.getTenkX() 
						&& m.getMetakX()<(tenkIgrac.getTenkX() + 50) 
						&& m.getMetakY()>tenkIgrac.getTenkY() 
						&& m.getMetakY()<(tenkIgrac.getTenkY() + 50)) {
					if (protivnik[i].getVrsta() == tip_protivnika.HELIKOPTER) {
						if(tenkIgrac.getTenk_HP() >= 0 && tenkIgrac.isShield_flag() == false){
							tenkIgrac.setTenk_HP(tenkIgrac.getTenk_HP() - 2);
							if(tenkIgrac.isZvezda() == true) {
								tenkIgrac.setZvezda(false);
								tenkIgrac.setAnimation();
							}
							zvuk.eksplodiraj();
							j.remove();
						}
						else if(tenkIgrac.isShield_flag() == true){
							tenkIgrac.setShield_flag(false);
							tenkIgrac.setTenk_HP(tenkIgrac.getTenk_HP() - 1);
							if(tenkIgrac.isZvezda() == true) {
								tenkIgrac.setZvezda(false);
								tenkIgrac.setAnimation();
							}
							zvuk.eksplodiraj();
							j.remove();
						}
					}
					else {
						if(tenkIgrac.getTenk_HP() >= 0 && tenkIgrac.isShield_flag() == false){
							tenkIgrac.setTenk_HP(tenkIgrac.getTenk_HP() - 1);
							if(tenkIgrac.isZvezda() == true) {
								tenkIgrac.setZvezda(false);
								tenkIgrac.setAnimation();
							}
							zvuk.eksplodiraj();
							j.remove();
						}
						else if(tenkIgrac.isShield_flag() == true){
							tenkIgrac.setShield_flag(false);
							zvuk.eksplodiraj();
							j.remove();
						}
					}
				}
				if (dvaIgraca && tenkIgrac2.isZiv() && m.getMetakX()>tenkIgrac2.getTenkX() 
						&& m.getMetakX()<(tenkIgrac2.getTenkX() + 50) 
						&& m.getMetakY()>tenkIgrac2.getTenkY() 
						&& m.getMetakY()<(tenkIgrac2.getTenkY() + 50)) {
					if (protivnik[i].getVrsta() == tip_protivnika.HELIKOPTER) {
						if(tenkIgrac2.getTenk_HP() >= 0 && tenkIgrac2.isShield_flag() == false){
							tenkIgrac2.setTenk_HP(tenkIgrac2.getTenk_HP() - 2);
							if(tenkIgrac2.isZvezda() == true) {
								tenkIgrac2.setZvezda(false);
								tenkIgrac2.setAnimation();
							}
							zvuk.eksplodiraj();
							j.remove();
						}
						else if(tenkIgrac2.isShield_flag() == true){
							tenkIgrac2.setShield_flag(false);
							tenkIgrac2.setTenk_HP(tenkIgrac.getTenk_HP() - 1);
							if(tenkIgrac2.isZvezda() == true) {
								tenkIgrac2.setZvezda(false);
								tenkIgrac2.setAnimation();
							}
							zvuk.eksplodiraj();
							j.remove();
						}
					}
					else {
						if(tenkIgrac2.getTenk_HP() >= 0 && tenkIgrac2.isShield_flag() == false){
							tenkIgrac2.setTenk_HP(tenkIgrac2.getTenk_HP() - 1);
							if(tenkIgrac2.isZvezda() == true) {
								tenkIgrac2.setZvezda(false);
								tenkIgrac2.setAnimation();
							}
							zvuk.eksplodiraj();
							j.remove();
						}
						else if(tenkIgrac2.isShield_flag() == true){
							tenkIgrac2.setShield_flag(false);
							zvuk.eksplodiraj();
							j.remove();
						}
					}
				}
				if(tenkIgrac.getTenk_HP() <= 0) {
					tenkIgrac.setZiv(false);
				}
				if(dvaIgraca && tenkIgrac2.getTenk_HP() <= 0) {
					tenkIgrac2.setZiv(false);
				}
				if (protivnik[i].getVrsta() == tip_protivnika.HELIKOPTER) {
					if (pogodioNestoRaketa(m)) j.remove();
				}
				else if (pogodioKamen(m)) {
					j.remove();
				}
				else if (m.getMetakY()<0 || m.getMetakY()>768 
						|| m.getMetakX()<0 || m.getMetakX()>1024) 
					j.remove();
			}
		}
		/*if (mod == game_mode.MOD2)
			for (int i=0; i<protivnikT.length; i++) {
					protivnikT[i].setDelta(delta);
				for (Iterator<Metak> j = protivnikT[i].getMeci().iterator(); j.hasNext();) { // kretanje metka protivnika
					Metak m = j.next();
					m.pomerajMetka(delta);
					if (m.getMetakX()>tenkIgrac.getTenkX() 
							&& m.getMetakX()<(tenkIgrac.getTenkX() + 50) 
							&& m.getMetakY()>tenkIgrac.getTenkY() 
							&& m.getMetakY()<(tenkIgrac.getTenkY() + 50)) {
						if (protivnikT[i].getVrsta() == tip_protivnika.HELIKOPTER) {
							if(tenkIgrac.getTenk_HP() >= 0 && tenkIgrac.isShield_flag() == false){
								tenkIgrac.setTenk_HP(tenkIgrac.getTenk_HP() - 2);
								if(tenkIgrac.isZvezda() == true) {
									tenkIgrac.setZvezda(false);
									tenkIgrac.setAnimation();
								}
								zvuk.eksplodiraj();
								j.remove();
							}
							else if(tenkIgrac.isShield_flag() == true){
								tenkIgrac.setShield_flag(false);
								tenkIgrac.setTenk_HP(tenkIgrac.getTenk_HP() - 1);
								if(tenkIgrac.isZvezda() == true) {
									tenkIgrac.setZvezda(false);
									tenkIgrac.setAnimation();
								}
								zvuk.eksplodiraj();
								j.remove();
							}
						} else {
							if(tenkIgrac.getTenk_HP() >= 0 && tenkIgrac.isShield_flag() == false){
								tenkIgrac.setTenk_HP(tenkIgrac.getTenk_HP() - 1);
								if(tenkIgrac.isZvezda() == true) {
									tenkIgrac.setZvezda(false);
									tenkIgrac.setAnimation();
								}
								zvuk.eksplodiraj();
								j.remove();
							}
							else if(tenkIgrac.isShield_flag() == true){
								tenkIgrac.setShield_flag(false);
								zvuk.eksplodiraj();
								j.remove();
							}
						}
					}
					if(tenkIgrac.getTenk_HP() <= 0) tenkIgrac.setZiv(false);
					if (protivnik[i].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (pogodioNestoRaketa(m)) j.remove();
					}
					else {
						if (pogodioKamen(m)) j.remove();
					}
					if (m.getMetakY()<0 || m.getMetakY()>768
							|| m.getMetakX()<0 || m.getMetakX()>1024) 
						j.remove();
				}
			}*/
	}
	
	public  boolean pogodioKamen (Metak m) {
		return (!mozeFull(kolizija.getObjekatList(), m.getMetakX(), m.getMetakY(), 0, 0));
	}
	
	public  boolean pogodioNestoRaketa (Metak r) {
		for(int i=0; i<kolizija.getObjekatList().size(); i++) {
			Objekat tempOb = kolizija.getObjekatList().get(i);
			if(tempOb.getObl() == oblik.KVADRAT) {
				if ((r.getSmer()==0 || r.getSmer()==1)
						 && (r.getMetakX() + 6.5 <= tempOb.getxOb()+tempOb.getSize()
			    		 && r.getMetakX() + 6.5 >= tempOb.getxOb()
			    		 && r.getMetakY() + 15 <= tempOb.getyOb()+tempOb.getSize()
			    		 && r.getMetakY() + 15 >= tempOb.getyOb()))
					return true;
				else if ((r.getSmer()==2 || r.getSmer()==3)
						 && (r.getMetakX() + 15 <= tempOb.getxOb()+tempOb.getSize()
			    		 && r.getMetakX() + 15 >= tempOb.getxOb()
			    		 && r.getMetakY() + 6.5 <= tempOb.getyOb()+tempOb.getSize()
			    		 && r.getMetakY() + 6.5 >= tempOb.getyOb()))
					return true;
			}
			if(tempOb.getObl() == oblik.PRAVOUGAONIK) {
				Pravougaonik p = (Pravougaonik) tempOb;
	   			if ((r.getSmer()==0 || r.getSmer()==1)
	   					 && (r.getMetakX() + 6.5 <= p.getxOb()+p.getxSize()
		        		 && r.getMetakX() + 6.5 >= p.getxOb()
		        		 && r.getMetakY() + 15 <= p.getyOb()+p.getySize()
		        		 && r.getMetakY() + 15 >= p.getyOb()))
	   				return true;
	   			if ((r.getSmer()==2 || r.getSmer()==3)
	   					 && (r.getMetakX() + 15 <= p.getxOb()+p.getxSize()
		        		 && r.getMetakX() + 15 >= p.getxOb()
		        		 && r.getMetakY() + 6.5 <= p.getyOb()+p.getySize()
		        		 && r.getMetakY() + 6.5 >= p.getyOb()))
	   				return true;
			}
		}
		return false;
	}
	
	public void pokupi () {
		super.pokupi();
		if (krajNivoa()) {
			for (int i=0; i<nagrada.length; i++) {
				PowerUp pu = nagrada[i];
				if (pu.isPokupljen()==false 
						&& (pu.getxKoord())<(tenkIgrac.getTenkX()+50) 
						&& (pu.getxKoord()+50)>tenkIgrac.getTenkX()
						&& (pu.getyKoord())<(tenkIgrac.getTenkY()+50) 
						&& (pu.getyKoord()+50)>tenkIgrac.getTenkY() ) {
					if(!tenkIgrac.isZvezda() && pu.getVrsta() == tip_powerup.STAR){
						pu.setPokupljen(true);
						tenkIgrac.setZvezda(true);
						tenkIgrac.setAnimation();
					}
					else if(!tenkIgrac.isRaketa() && pu.getVrsta() == tip_powerup.SHOT){
						pu.setPokupljen(true);
						tenkIgrac.setRaketa(true);
					}
				}
				if (dvaIgraca && pu.isPokupljen()==false 
						&& (pu.getxKoord())<(tenkIgrac2.getTenkX()+50) 
						&& (pu.getxKoord()+50)>tenkIgrac2.getTenkX()
						&& (pu.getyKoord())<(tenkIgrac2.getTenkY()+50) 
						&& (pu.getyKoord()+50)>tenkIgrac2.getTenkY() ) {
					if(!tenkIgrac2.isZvezda() && pu.getVrsta() == tip_powerup.STAR){
						pu.setPokupljen(true);
						tenkIgrac2.setZvezda(true);
						tenkIgrac2.setAnimation();
					}
					else if(!tenkIgrac2.isRaketa() && pu.getVrsta() == tip_powerup.SHOT){
						pu.setPokupljen(true);
						tenkIgrac2.setRaketa(true);
					}
				}
			}
		}
	}
	
	public void kretanjeMetka (int delta) {
		if(mod == game_mode.MOD1) {
			for (int j=0; j<protivnik.length; j++) {
				for (Iterator<Metak> i = tenkIgrac.getMetak().iterator(); i.hasNext();) {
					Metak m = i.next();
					m.pomerajMetka((float)delta/protivnik.length);
					if (protivnik[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnik[j].isUbiven() == false 
								&& m.getMetakX() > protivnik[j].getProtivnikX() 
								&& m.getMetakX() < (protivnik[j].getProtivnikX() + 80) 
								&& m.getMetakY() > protivnik[j].getProtivnikY() 
								&& m.getMetakY() < (protivnik[j].getProtivnikY() + 100)) {
							protivnik[j].setHP(protivnik[j].getHP() - 1);
							if(protivnik[j].getHP() == 0) {
								protivnik[j].setUbiven(true);
								tenkIgrac.setBodovi(bodovi[5]);
							}
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					else {
						if (protivnik[j].isUbiven() == false 
								&& m.getMetakX() > protivnik[j].getProtivnikX() 
								&& m.getMetakX() < (protivnik[j].getProtivnikX() + 50) 
								&& m.getMetakY() > protivnik[j].getProtivnikY() 
								&& m.getMetakY() < (protivnik[j].getProtivnikY() + 50)) {
							protivnik[j].setHP(protivnik[j].getHP() - 1);
							if(protivnik[j].getHP() == 0) {
								protivnik[j].setUbiven(true);
								if(protivnik[j].getVrsta() == tip_protivnika.SIVI) 
									tenkIgrac.setBodovi(bodovi[0]);
								if(protivnik[j].getVrsta() == tip_protivnika.CRNI) 
									tenkIgrac.setBodovi(bodovi[1]);
								if(protivnik[j].getVrsta() == tip_protivnika.TOP) 
									tenkIgrac.setBodovi(bodovi[2]);
								if(j<brPowerUp)
									budzenje[j].izbaci();
							}
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					if (pogodioKamen(m)) i.remove();
					else if (krajNivoa() && m.getMetakX()>=460 && m.getMetakX()<560 && m.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( m.getMetakY()<0 ) i.remove();
					}
					else if (m.getMetakY()<0 || m.getMetakY()>768 || m.getMetakX()<0 || m.getMetakX()>1024) i.remove();
				}
			}
		}
		/*if(mod == game_mode.MOD2) {
			for (int j=0; j<protivnikT.length; j++) {
				for (Iterator<Metak> i = tenkIgrac.getMetak().iterator(); i.hasNext();) {
					Metak m = i.next();
					m.pomerajMetka((float)delta/protivnik.length);
					if (protivnikT[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnikT[j].isUbiven() == false 
								&& m.getMetakX() > protivnikT[j].getProtivnikX() 
								&& m.getMetakX() < (protivnikT[j].getProtivnikX() + 80) 
								&& m.getMetakY() > protivnikT[j].getProtivnikY() 
								&& m.getMetakY() < (protivnikT[j].getProtivnikY() + 100)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 1);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					else {
						if (protivnikT[j].isUbiven() == false 
								&& m.getMetakX() > protivnikT[j].getProtivnikX() 
								&& m.getMetakX() < (protivnikT[j].getProtivnikX() + 50) 
								&& m.getMetakY() > protivnikT[j].getProtivnikY() 
								&& m.getMetakY() < (protivnikT[j].getProtivnikY() + 50)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 1);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					if(protivnikT[j].getHP() == 0) protivnikT[j].setUbiven(true);
					if (pogodioKamen(m)) i.remove();
					else if (krajNivoa() && m.getMetakX()>=460 && m.getMetakX()<560 && m.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( m.getMetakY()<0 ) i.remove();
					}
					else if (m.getMetakY()<0 || m.getMetakY()>768 || m.getMetakX()<0 || m.getMetakX()>1024) i.remove();
				}
			}
		}*/
	}
	
	public void kretanjeMetkaDva (int delta) {
		if(mod == game_mode.MOD1) {
			for (int j=0; j<protivnik.length; j++) {
				for (Iterator<Metak> i = tenkIgrac2.getMetak().iterator(); i.hasNext();) {
					Metak m = i.next();
					m.pomerajMetka((float)delta/protivnik.length);
					if (protivnik[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnik[j].isUbiven() == false 
								&& m.getMetakX() > protivnik[j].getProtivnikX() 
								&& m.getMetakX() < (protivnik[j].getProtivnikX() + 80) 
								&& m.getMetakY() > protivnik[j].getProtivnikY() 
								&& m.getMetakY() < (protivnik[j].getProtivnikY() + 100)) {
							protivnik[j].setHP(protivnik[j].getHP() - 1);
							if(protivnik[j].getHP() == 0) {
								protivnik[j].setUbiven(true);
								tenkIgrac2.setBodovi(bodovi[5]);
							}
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					else {
						if (protivnik[j].isUbiven() == false 
								&& m.getMetakX() > protivnik[j].getProtivnikX() 
								&& m.getMetakX() < (protivnik[j].getProtivnikX() + 50) 
								&& m.getMetakY() > protivnik[j].getProtivnikY() 
								&& m.getMetakY() < (protivnik[j].getProtivnikY() + 50)) {
							protivnik[j].setHP(protivnik[j].getHP() - 1);
							if(protivnik[j].getHP() == 0) {
								protivnik[j].setUbiven(true);
								if(protivnik[j].getVrsta() == tip_protivnika.SIVI) 
									tenkIgrac2.setBodovi(bodovi[0]);
								if(protivnik[j].getVrsta() == tip_protivnika.CRNI) 
									tenkIgrac2.setBodovi(bodovi[1]);
								if(protivnik[j].getVrsta() == tip_protivnika.TOP) 
									tenkIgrac2.setBodovi(bodovi[2]);
								if(j<brPowerUp)
									budzenje[j].izbaci();
							}
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					if (pogodioKamen(m)) i.remove();
					else if (krajNivoa() && m.getMetakX()>=460 && m.getMetakX()<560 && m.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( m.getMetakY()<0 ) i.remove();
					}
					else if (m.getMetakY()<0 || m.getMetakY()>768 || m.getMetakX()<0 || m.getMetakX()>1024) i.remove();
				}
			}
		}
		/*if(mod == game_mode.MOD2) {
			for (int j=0; j<protivnikT.length; j++) {
				for (Iterator<Metak> i = tenkIgrac2.getMetak().iterator(); i.hasNext();) {
					Metak m = i.next();
					m.pomerajMetka((float)delta/protivnik.length);
					if (protivnikT[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnikT[j].isUbiven() == false 
								&& m.getMetakX() > protivnikT[j].getProtivnikX() 
								&& m.getMetakX() < (protivnikT[j].getProtivnikX() + 80) 
								&& m.getMetakY() > protivnikT[j].getProtivnikY() 
								&& m.getMetakY() < (protivnikT[j].getProtivnikY() + 100)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 1);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					else {
						if (protivnikT[j].isUbiven() == false 
								&& m.getMetakX() > protivnikT[j].getProtivnikX() 
								&& m.getMetakX() < (protivnikT[j].getProtivnikX() + 50) 
								&& m.getMetakY() > protivnikT[j].getProtivnikY() 
								&& m.getMetakY() < (protivnikT[j].getProtivnikY() + 50)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 1);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					if(protivnikT[j].getHP() == 0) protivnikT[j].setUbiven(true);
					if (pogodioKamen(m)) i.remove();
					else if (krajNivoa() && m.getMetakX()>=460 && m.getMetakX()<560 && m.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( m.getMetakY()<0 ) i.remove();
					}
					else if (m.getMetakY()<0 || m.getMetakY()>768 || m.getMetakX()<0 || m.getMetakX()>1024) i.remove();
				}
			}
		}*/
	}
	
	public void kretanjeRakete (int delta) {
		if(mod == game_mode.MOD1) {
			for (int j=0; j<protivnik.length; j++) {
				for (Iterator<Metak> i = tenkIgrac.getRakete().iterator(); i.hasNext();) {
					Metak r = i.next();
					r.pomerajMetka((float)delta/protivnik.length);
					if (protivnik[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnik[j].isUbiven() == false) {
							if ((r.getSmer()==0 || r.getSmer()==1)
									&& r.getMetakX() + 6.5 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 6.5 < (protivnik[j].getProtivnikX() + 80) 
									&& r.getMetakY() + 15 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 15 < (protivnik[j].getProtivnikY() + 100)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									tenkIgrac.setBodovi(bodovi[5]);
								}
								zvuk.eksplodiraj();
								i.remove();
							}
							else if ((r.getSmer()==2 || r.getSmer()==3)
									&& r.getMetakX() + 15 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 15 < (protivnik[j].getProtivnikX() + 80) 
									&& r.getMetakY() + 6.5 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 6.5 < (protivnik[j].getProtivnikY() + 100)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									tenkIgrac.setBodovi(bodovi[5]);
								}
								zvuk.eksplodiraj();
								i.remove();
							}
						}
					}
					else {
						if (protivnik[j].isUbiven() == false) {
							if ((r.getSmer()==0 || r.getSmer()==1)
									&& r.getMetakX() + 6.5 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 6.5 < (protivnik[j].getProtivnikX() + 50) 
									&& r.getMetakY() + 15 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 15 < (protivnik[j].getProtivnikY() + 50)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									if(protivnik[j].getVrsta() == tip_protivnika.SIVI) 
										tenkIgrac.setBodovi(bodovi[0]);
									if(protivnik[j].getVrsta() == tip_protivnika.CRNI) 
										tenkIgrac.setBodovi(bodovi[1]);
									if(protivnik[j].getVrsta() == tip_protivnika.TOP) 
										tenkIgrac.setBodovi(bodovi[2]);
									if(j<brPowerUp)
										budzenje[j].izbaci();
								}
								zvuk.eksplodiraj();
								i.remove();
							}
							else if ((r.getSmer()==2 || r.getSmer()==3)
									&& r.getMetakX() + 15 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 15 < (protivnik[j].getProtivnikX() + 50) 
									&& r.getMetakY() + 6.5 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 6.5 < (protivnik[j].getProtivnikY() + 50)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									if(protivnik[j].getVrsta() == tip_protivnika.SIVI) 
										tenkIgrac.setBodovi(bodovi[0]);
									if(protivnik[j].getVrsta() == tip_protivnika.CRNI) 
										tenkIgrac.setBodovi(bodovi[1]);
									if(protivnik[j].getVrsta() == tip_protivnika.TOP) 
										tenkIgrac.setBodovi(bodovi[2]);
								}
								zvuk.eksplodiraj();
								i.remove();
							}
						}
					}
					if (pogodioNestoRaketa(r)) i.remove();
					else if (krajNivoa() && r.getMetakX()>=456 && r.getMetakX()<556 && r.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( r.getMetakY()<0 ) i.remove();
					}
					else if (r.getMetakY()<0 || r.getMetakY()>768 || r.getMetakX()<0 || r.getMetakX()>1024) i.remove();
				}
			}
		}
		/*if(mod == game_mode.MOD2) {
			for (int j=0; j<protivnikT.length; j++) {
				for (Iterator<Metak> i = tenkIgrac.getRakete().iterator(); i.hasNext();) {
					Metak r = i.next();
					r.pomerajMetka((float)delta/protivnik.length);
					if (protivnikT[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnikT[j].isUbiven() == false 
								&& r.getMetakX() > protivnikT[j].getProtivnikX() 
								&& r.getMetakX() < (protivnikT[j].getProtivnikX() + 80) 
								&& r.getMetakY() > protivnikT[j].getProtivnikY() 
								&& r.getMetakY() < (protivnikT[j].getProtivnikY() + 100)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 5);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					else {
						if (protivnikT[j].isUbiven() == false 
								&& r.getMetakX() > protivnikT[j].getProtivnikX() 
								&& r.getMetakX() < (protivnikT[j].getProtivnikX() + 50) 
								&& r.getMetakY() > protivnikT[j].getProtivnikY() 
								&& r.getMetakY() < (protivnikT[j].getProtivnikY() + 50)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 5);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					if(protivnik[j].getHP() <= 0) protivnik[j].setUbiven(true);
					if (pogodioNestoRaketa(r)) i.remove();
					else if (krajNivoa() && r.getMetakX()>=456 && r.getMetakX()<556 && r.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( r.getMetakY()<0 ) i.remove();
					}
					else if (r.getMetakY()<0 || r.getMetakY()>768 || r.getMetakX()<0 || r.getMetakX()>1024) i.remove();
				}
			}
		}*/
	}
	
	public void kretanjeRaketeDva (int delta) {
		if(mod == game_mode.MOD1) {
			for (int j=0; j<protivnik.length; j++) {
				for (Iterator<Metak> i = tenkIgrac2.getRakete().iterator(); i.hasNext();) {
					Metak r = i.next();
					r.pomerajMetka((float)delta/protivnik.length);
					if (protivnik[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnik[j].isUbiven() == false) {
							if ((r.getSmer()==0 || r.getSmer()==1)
									&& r.getMetakX() + 6.5 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 6.5 < (protivnik[j].getProtivnikX() + 80) 
									&& r.getMetakY() + 15 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 15 < (protivnik[j].getProtivnikY() + 100)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									tenkIgrac2.setBodovi(bodovi[5]);
								}
								zvuk.eksplodiraj();
								i.remove();
							}
							else if ((r.getSmer()==2 || r.getSmer()==3)
									&& r.getMetakX() + 15 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 15 < (protivnik[j].getProtivnikX() + 80) 
									&& r.getMetakY() + 6.5 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 6.5 < (protivnik[j].getProtivnikY() + 100)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									tenkIgrac2.setBodovi(bodovi[5]);
								}
								zvuk.eksplodiraj();
								i.remove();
							}
						}
					}
					else {
						if (protivnik[j].isUbiven() == false) {
							if ((r.getSmer()==0 || r.getSmer()==1)
									&& r.getMetakX() + 6.5 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 6.5 < (protivnik[j].getProtivnikX() + 50) 
									&& r.getMetakY() + 15 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 15 < (protivnik[j].getProtivnikY() + 50)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									if(protivnik[j].getVrsta() == tip_protivnika.SIVI) 
										tenkIgrac2.setBodovi(bodovi[0]);
									if(protivnik[j].getVrsta() == tip_protivnika.CRNI) 
										tenkIgrac2.setBodovi(bodovi[1]);
									if(protivnik[j].getVrsta() == tip_protivnika.TOP) 
										tenkIgrac2.setBodovi(bodovi[2]);
									if(j<brPowerUp)
										budzenje[j].izbaci();
								}
								zvuk.eksplodiraj();
								i.remove();
							}
							else if ((r.getSmer()==2 || r.getSmer()==3)
									&& r.getMetakX() + 15 > protivnik[j].getProtivnikX() 
									&& r.getMetakX() + 15 < (protivnik[j].getProtivnikX() + 50) 
									&& r.getMetakY() + 6.5 > protivnik[j].getProtivnikY() 
									&& r.getMetakY() + 6.5 < (protivnik[j].getProtivnikY() + 50)) {
								protivnik[j].setHP(protivnik[j].getHP() - 5);
								if(protivnik[j].getHP() <= 0) {
									protivnik[j].setUbiven(true);
									if(protivnik[j].getVrsta() == tip_protivnika.SIVI) 
										tenkIgrac2.setBodovi(bodovi[0]);
									if(protivnik[j].getVrsta() == tip_protivnika.CRNI) 
										tenkIgrac2.setBodovi(bodovi[1]);
									if(protivnik[j].getVrsta() == tip_protivnika.TOP) 
										tenkIgrac2.setBodovi(bodovi[2]);
								}
								zvuk.eksplodiraj();
								i.remove();
							}
						}
					}
					if (pogodioNestoRaketa(r)) i.remove();
					else if (krajNivoa() && r.getMetakX()>=456 && r.getMetakX()<556 && r.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( r.getMetakY()<0 ) i.remove();
					}
					else if (r.getMetakY()<0 || r.getMetakY()>768 || r.getMetakX()<0 || r.getMetakX()>1024) i.remove();
				}
			}
		}
		/*if(mod == game_mode.MOD2) {
			for (int j=0; j<protivnikT.length; j++) {
				for (Iterator<Metak> i = tenkIgrac.getRakete().iterator(); i.hasNext();) {
					Metak r = i.next();
					r.pomerajMetka((float)delta/protivnik.length);
					if (protivnikT[j].getVrsta() == tip_protivnika.HELIKOPTER) {
						if (protivnikT[j].isUbiven() == false 
								&& r.getMetakX() > protivnikT[j].getProtivnikX() 
								&& r.getMetakX() < (protivnikT[j].getProtivnikX() + 80) 
								&& r.getMetakY() > protivnikT[j].getProtivnikY() 
								&& r.getMetakY() < (protivnikT[j].getProtivnikY() + 100)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 5);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					else {
						if (protivnikT[j].isUbiven() == false 
								&& r.getMetakX() > protivnikT[j].getProtivnikX() 
								&& r.getMetakX() < (protivnikT[j].getProtivnikX() + 50) 
								&& r.getMetakY() > protivnikT[j].getProtivnikY() 
								&& r.getMetakY() < (protivnikT[j].getProtivnikY() + 50)) {
							protivnikT[j].setHP(protivnikT[j].getHP() - 5);
							zvuk.eksplodiraj();
							i.remove();
						}
					}
					if(protivnik[j].getHP() <= 0) protivnik[j].setUbiven(true);
					if (pogodioNestoRaketa(r)) i.remove();
					else if (krajNivoa() && r.getMetakX()>=456 && r.getMetakX()<556 && r.getMetakY()<50) {
						if (!otvoriProlaz) {
							otvoriProlaz = true;
							tenkIgrac.setBodovi(bodovi[7]);
							zvuk.eksplodiraj();
							i.remove();
						}
						else if ( r.getMetakY()<0 ) i.remove();
					}
					else if (r.getMetakY()<0 || r.getMetakY()>768 || r.getMetakX()<0 || r.getMetakX()>1024) i.remove();
				}
			}
		}*/
	}
	
	public void moveRight (int delta, int ivica) {
		tenkIgrac.setTenk(tenkIgrac.getMovingRight());
		tenkIgrac.setAutoUpdate(true);
		tenkIgrac.setTenkX(tenkIgrac.getTenkX() + delta * .1f * 1.5f);
		if (krajNivoa() && (tenkIgrac.getTenkX() >= ivica)) {
			tenkIgrac.setTenkX(tenkIgrac.getTenkX() + delta * .1f * 1.5f);
		}
		if (tenkIgrac.getTenkX() > ivica) {
			tenkIgrac.setTenkX(tenkIgrac.getTenkX() - delta * .1f * 1.5f);
		}
		if (dvaIgraca && !mozeIgrac()) {
			tenkIgrac.setTenkX(tenkIgrac.getTenkX() - delta * .1f * 1.5f);
		}
		if(mod == game_mode.MOD1) {
			if(!mozeTenk(kolizija.getObjekatList()))
				tenkIgrac.setTenkX(tenkIgrac.getTenkX() - delta * .1f * 1.5f);
		}
		if(mod == game_mode.MOD2) {
			if(!mozeTenkPT(kolizija.getObjekatList()))
				tenkIgrac.setTenkX(tenkIgrac.getTenkX() - delta * .1f * 1.5f);
		}
	}
	
	public void moveRightDva (int delta, int ivica) {
		tenkIgrac2.setTenk(tenkIgrac2.getMovingRight());
		tenkIgrac2.setAutoUpdate(true);
		tenkIgrac2.setTenkX(tenkIgrac2.getTenkX() + delta * .1f * 1.5f);
		if (krajNivoa() && (tenkIgrac2.getTenkX() >= ivica)) {
			tenkIgrac2.setTenkX(tenkIgrac2.getTenkX() + delta * .1f * 1.5f);
		}
		if (tenkIgrac2.getTenkX() > ivica) {
			tenkIgrac2.setTenkX(tenkIgrac2.getTenkX() - delta * .1f * 1.5f);
		}
		if (dvaIgraca && !mozeIgrac()) {
			tenkIgrac2.setTenkX(tenkIgrac2.getTenkX() - delta * .1f * 1.5f);
		}
		if(mod == game_mode.MOD1) {
			if(!mozeTenkDva(kolizija.getObjekatList()))
				tenkIgrac2.setTenkX(tenkIgrac2.getTenkX() - delta * .1f * 1.5f);
		}
		if(mod == game_mode.MOD2) {
			if(!mozeTenkDvaPT(kolizija.getObjekatList()))
				tenkIgrac2.setTenkX(tenkIgrac2.getTenkX() - delta * .1f * 1.5f);
		}
	}
	
	public boolean naJezeru (LinkedList<Objekat> objekatList, double x, double y ) { //kolizija sa preprekama
		for(int i=0; i<objekatList.size(); i++) {
			Pravougaonik p = (Pravougaonik) objekatList.get(i);
   			if ((x <= p.getxOb()+p.getxSize()
	        		 && x+50 >= p.getxOb()
	        		 && y <= p.getyOb()+p.getySize()
	        		 && y+50 >= p.getyOb()))
   				return true;
		}
		return false;
	}
	
	public void klizaj (int delta) {
		if (vremeKlizanja > 0) {
			if (poslednjiTaster == Input.KEY_UP) moveUp(constDelta, 0);
			else if (poslednjiTaster == Input.KEY_DOWN) moveDown(constDelta, 718);
			else if (poslednjiTaster == Input.KEY_LEFT) moveLeft(constDelta, 0);
			else moveRight(constDelta, 974);
			vremeKlizanja--;
			if (vremeKlizanja == 0) poslednjiTaster = 0;
		}
	}
	
	public void klizajDva (int delta) {
		if (vremeKlizanja2 > 0) {
			if (poslednjiTaster2 == 1) moveUpDva(constDelta, 0);
			else if (poslednjiTaster2 == 2) moveDownDva(constDelta, 718);
			else if (poslednjiTaster2 == 3) moveLeftDva(constDelta, 0);
			else moveRightDva(constDelta, 974);
			vremeKlizanja2--;
			if (vremeKlizanja2 == 0) poslednjiTaster2 = 0;
		}
	}

	public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
		Input input = gc.getInput();
		Nivo.setNivo(13);
		if (!zvuk.dohvTekucu().playing()) {
			zvuk.pustiMuziku();
		}
		if (!dvaIgraca) {
			if (tenkIgrac.isZiv() == false) {
				Nivo.setVerticalLevel(false);
				tenkIgrac.ozivi();
				oziviSve();
				sbg.enterState(4);
			}
		}
		else {
			if (tenkIgrac.isZiv() == false && tenkIgrac2.isZiv() == false) {
				Nivo.setVerticalLevel(false);
				tenkIgrac.ozivi();
				tenkIgrac2.ozivi();
				oziviSve();
				sbg.enterState(4);
			}
		}
		fullScreenOnOff(gc);
		if (quit==false) {
			kretanje(constDelta);
			pokupi();
			
			if (shot) {
				kretanjeMetka(constDelta);
				kretanjeRakete(constDelta);
			}
			if (shot2) {
				kretanjeMetkaDva(constDelta);
				kretanjeRaketeDva(constDelta);
			}
			
			klizaj(constDelta);
			klizajDva(constDelta);
			
			tenkIgrac.odbrojavaj();
			tenkIgrac2.odbrojavaj();
			
			//================prvi igrac
			//shot
			if(input.isKeyPressed(Input.KEY_SPACE) && tenkIgrac.isZiv()==true) {
				zvuk.pucaj();
				shot = true;
				tenkIgrac.pucaj(false);
			}
			//secundary shot
			if(input.isKeyPressed(Input.KEY_LCONTROL) && tenkIgrac.isZiv()==true) {
				if (tenkIgrac.isRaketa()) {
					shot = true;
					tenkIgrac.pucajRaketu();
				}
			}
			//up
			if(input.isKeyDown(Input.KEY_UP) && tenkIgrac.isZiv()==true && tenkIgrac.getTenkX()<=1024) {
				if (vremeKlizanja == 0) {
					moveUp(constDelta, 0);
					poslednjiTaster = Input.KEY_UP;
				}
			}
			//down
			else if(input.isKeyDown(Input.KEY_DOWN) && tenkIgrac.isZiv()==true && tenkIgrac.getTenkX()<=1024) {
				if (vremeKlizanja == 0) {
					moveDown(constDelta, 718);
					poslednjiTaster = Input.KEY_DOWN;
				}
			}
			//left
			else if(input.isKeyDown(Input.KEY_LEFT) && tenkIgrac.isZiv()==true) {
				if (vremeKlizanja == 0) {
					moveLeft(constDelta, 0);
					if (tenkIgrac.getTenkX()<974) {
						tenkIgrac.setPresao(false);
					}
					poslednjiTaster = Input.KEY_LEFT;
				}
			}
			//right
			else if(input.isKeyDown(Input.KEY_RIGHT) && tenkIgrac.isZiv()==true) {
				if (vremeKlizanja == 0) {
					moveRight(constDelta, 974);
					if (tenkIgrac.getTenkX()>974) {
						if (tenkIgrac2.isPresao()) {
							tenkIgrac.noviLevelBonus(dvaIgraca);
							tenkIgrac2.noviLevelBonus();
							sbg.enterState(12);
						}
						else {
							tenkIgrac.setPresao(true);
						}
						if (!dvaIgraca || tenkIgrac2.isZiv() == false) {
							tenkIgrac.noviLevel(dvaIgraca);
							sbg.enterState(12);
						}
					}
					poslednjiTaster = Input.KEY_RIGHT;
				}
			}
			else {
				tenkIgrac.setAutoUpdate(false);
				if (naJezeru(kolizija.getObjekatVoda(), tenkIgrac.getTenkX(), tenkIgrac.getTenkY())
							&& poslednjiTaster != 0 && vremeKlizanja == 0) {
					vremeKlizanja = 30;
				}
			}
			//============drugi igrac
			if (dvaIgraca) {
				//shot
				if(input.isControlPressed(6, input.getControllerCount()-1) && tenkIgrac2.isZiv()==true) {
					zvuk.pucaj();
					shot2 = true;
					tenkIgrac2.pucaj(false);
				}
				//secundary shot
				if(input.isControlPressed(5, input.getControllerCount()-1) && tenkIgrac2.isZiv()==true) {
					if (tenkIgrac2.isRaketa()) {
						shot2 = true;
						tenkIgrac2.pucajRaketu();
					}
				}
				//up
				if(input.isControllerUp(Input.ANY_CONTROLLER) && tenkIgrac2.isZiv()==true && tenkIgrac2.getTenkX()<=1024) {
					if (vremeKlizanja2 == 0) {
						moveUpDva(constDelta, 0);
						poslednjiTaster2 = 1;
					}
				}
				//down
				else if(input.isControllerDown(Input.ANY_CONTROLLER) && tenkIgrac2.isZiv()==true && tenkIgrac2.getTenkX()<=1024) {
					if (vremeKlizanja2 == 0) {
						moveDownDva(constDelta, 718);
						poslednjiTaster2 = 2;
					}
				}			
				//left
				else if(input.isControllerLeft(Input.ANY_CONTROLLER) && tenkIgrac2.isZiv()==true) {
					if (vremeKlizanja2 == 0) {
						moveLeftDva(constDelta, 0);
						if (tenkIgrac2.getTenkX()<974) {
							tenkIgrac2.setPresao(false);
						}
						poslednjiTaster2 = 3;
					}
				}
				//right
				else if(input.isControllerRight(Input.ANY_CONTROLLER) && tenkIgrac2.isZiv()==true) {
					if (vremeKlizanja2 == 0) {
						moveRightDva(constDelta, 974);
						if (tenkIgrac2.getTenkX()>974) {
							if (tenkIgrac.isPresao()) {
								tenkIgrac.noviLevelBonus(dvaIgraca);
								tenkIgrac2.noviLevelBonus();
								sbg.enterState(12);
							}
							else {
								tenkIgrac2.setPresao(true);
							}
							if (tenkIgrac.isZiv() == false) {
								tenkIgrac2.noviLevel();
								sbg.enterState(12);
							}
						}
						poslednjiTaster2 = 4;
					}
				}
				else {
					tenkIgrac2.setAutoUpdate(false);
					if (naJezeru(kolizija.getObjekatVoda(), tenkIgrac2.getTenkX(), tenkIgrac2.getTenkY())
							&& poslednjiTaster2 != 0 && vremeKlizanja2 == 0) {
						vremeKlizanja2 = 30;
					}
				}
				
				if (input.isControlPressed(13, input.getControllerCount()-1)) {
					quit = true;
				}
			}
			
			//escape
			if (input.isKeyDown(Input.KEY_ESCAPE)) {
				quit = true;
			}
		}
		//when escape i clicked
		if (quit == true) {
			if (input.isKeyDown(Input.KEY_R)) {
				quit = false;
			}
			if (input.isKeyDown(Input.KEY_M)) {
				mainMenu(sbg);
			}
			if (input.isKeyDown(Input.KEY_Q)) {
				gc.exit();
			}
		}
	}

}
